class: title-slide, middle, center background-image: url(data:image/png;base64,#figures/Clases_Rladies_Slide1_reproducible.png) background-position: 90% 75%, 75% 75%, center background-size: 1210px,210px, cover .center-column[ # Buenas prácticas en Bioinformática e Introducción a Markdown ### ⚔<br/>Aspectos generales ####Dra. Evelia Coss #### 08/18/2025 ] .left[.footnote[R-Ladies Theme[R-Ladies Theme](https://www.apreshill.com/project/rladies-xaringan/)]] --- background-image: url(data:image/png;base64,#figures/liigh_unam_logo.png) background-position: 10% 10% background-size: 10% class: middle, center # Sobre mi ---- .left-col[ ###
Dra. Evelia Lorena Coss-Navarrete Investigadora Posdoctoral en el Laboratorio Internacional de Investigación sobre el Genoma Humano [(LIIGH), UNAM](https://twitter.com/LIIGH_UNAM), campus Juriquilla [
Dra Alejandra Medina-Rivera](https://liigh.unam.mx/profile/dra-alejandra-medina-rivera/) [
EveliaCoss.github.io](https://eveliacoss.github.io/) ] .center-col[ ###
Miembro - [LupusRGMX](https://twitter.com/LupusRgmx) - [Proyecto JAGUAR](https://twitter.com/PJaguarLATAM) - [Rladies Morelia](https://www.facebook.com/profile.php?id=100093337606435) - [CDSB - Mexico](https://twitter.com/CDSBMexico) - [RIABIO](https://twitter.com/RiaBioNet) - [The Carpentries](https://carpentries.org/index.html) - [ISCB-RSG Mexico](https://rsg-mexico.iscbsc.org/) - [ISCB Wikipedia team](https://x.com/iscbwikiteam) ] .right-col[ ###
Formación académica - Doctorado en Biotecnología de Plantas, [Cinvestav, Langebio](https://twitter.com/uga_langebio), [
Dra Selene Fernandez-Valverde](https://twitter.com/SelFdz) - Maestría en Biotecnología de Plantas, [Cinvestav, Unidad Irapuato](https://twitter.com/CinvestavIra) - Ing. en Biotecnología, [UPSIN](https://www.facebook.com/UPSINSINALOA) ] --- class: inverse, center, middle
# Buenas prácticas en Bioinformática --- ## Un algoritmo nos permite resolver un problema ⭐ Un algoritmo es un método para resolver un problema mediante una serie de pasos **definidos, precisos y finitos.** - **Definido:** si se sigue dos veces, se obtiene el mismo resultado. Es reproducible. - **Preciso:** implica el orden de realización de cada uno de los pasos. - **Finito:** Tiene un numero determinado de pasos, implica que tiene un fin. > Un algoritmo podemos definirlo como un **programa o software.** <img src="data:image/png;base64,#figures/allison-horst-code-kitchen.png" width="60%" style="display: block; margin: auto;" /> .left[.footnote[.black[ Imagen tomada de: [Allison Horst](https://allisonhorst.com/allison-horst) ]]] --- ## Para escribir un buen software necesitas: > Escribir código mantenible (maintainable code), usar control de versiones (version control) y rastreadores de problemas (issue trackers), revisiones de código (code reviews), pruebas unitarias (unit testing) y automatización de tareas (task automation). > > Wilson, *et al.* 2014. *PLOS Biology* <img src="data:image/png;base64,#figures/what-code-quality-1.jpg" width="60%" style="display: block; margin: auto;" /> .left[.footnote[.black[ Imagen tomada de: https://devcom.com/tech-blog/code-quality-definition-how-to-improve-code-quality/ ]]] --- ## Pasos para escribir un buen software .pull-left[ 1. Análisis del problema / Definir el problema 2. Diseño del algoritmo / Diseño del programa 3. Codificación / Escribir el código 4. Compilación y ejecución del programa 5. Verificación / Realizar pruebas 6. Depuración / Detectar los errores y corregirlos > Programacion defensiva 7. Documentación ] .pull-right[ <img src="data:image/png;base64,#figures/homersapien.jpg" width="80%" style="display: block; margin: auto;" /> ] --- ## Paso 7: Documentación <img src="data:image/png;base64,#figures/reproducibility_court.png" width="80%" style="display: block; margin: auto;" /> .left[.footnote[.black[ Imagen tomada de: [Allison Horst](https://allisonhorst.com/allison-horst) ]]] --- ## Correcta documentación de nuestro código .content-box-blue[ - **Título:** (opcional) - **Autor (author):** Su nombre - **Dia (date):** Fecha de creación - **Paquetes** (packages) - **Directorio de trabajo (Working directory):** En que carpeta se encuentra tu datos y programa. - **Información descriptiva del programa (Description):** ¿Para qué sirve el programa? Ej: El siguiente programa realiza la suma de dos numeros enteros a partir de la entrada del usuario y posteriormente la imprime en pantalla. - **Usage ¿Cómo se utiliza?** - **Argumentos (Arguments)** + Información de entrada (Data Inputs): Ej: Solo numeros enteros (sin decimales). + Información de salida (Outpus): Graficas, figuras, tablas, etc. ] --- <img src="data:image/png;base64,#figures/meme_documentacion.jpg" width="40%" style="display: block; margin: auto;" /> --- ## Puntos claves para buenas practicas en bioinfo ⭐ 1. Escriba **programas para personas, no para computadoras** (Documenta qué hace y por qué). - Se coherente en la nomenclatura, indentación y otros aspectos del estilo. 2. Divide los programas en funciones cortas de un solo propósito. 💻 📚 3. **No repitas tu código.** Crea pasos reproducibles o que se repitan por si solas. ➰ 4. Planifique los errores (**Programacion defensiva**) 🚩 5. Optimice el software sólo después de que funcione correctamente. - Si funciona no lo modifiques, simplificalo. 6. Colaborar - Busque siempre bibliotecas de software bien mantenidas que hagan lo que necesita. 👥 > Ejemplo de como realizo mis documentos 💜 > Aqui les dejo el script que les doy a mis alumnos [VisualizacionDatos.R](https://github.com/EveliaCoss/RNAseq_classFEB2024/blob/main/Practica_Dia3/scripts/VisualizacionDatos.R) del curso de [Análisis de datos de RNA-Seq](https://github.com/EveliaCoss/RNAseq_classFEB2024). --- class: inverse, center, middle
# ¿Qué es Markdown? --- ## ¿Qué es Markdown? Markdown es un **lenguaje de marcado ligero** que permite añadir elementos de formato a documentos de *texto plano*. Creado por John Gruber en 2004, Markdown es actualmente uno de los lenguajes más populares del mundo. - Sencillo y legible, sin necesidad de usar editores complicados o HTML. - **lenguaje de marcado ligero:** Escribir texto que incluye instrucciones simples para darle formato. -- ### 🧩 ¿Por qué se llama “ligero”? Porque: - Usa símbolos sencillos como `*, #,` o `-` para indicar formato. - No requiere cerrar etiquetas como `<strong> o <div>` (como en HTML). - Es minimalista y limpio, ideal para escribir rápido sin distracciones. --- ## 🧠 ¿Para qué se usa? - Crear documentación técnica o científica - Escribir **README.md** en proyectos de GitHub - Generar contenido para sitios web - Crear [tesis](https://quarto.org/docs/get-started/hello/rstudio.html), notas, [libros](https://bookdown.org/yihui/rmarkdown-cookbook/), [presentaciones](https://bookdown.org/yihui/rmarkdown/xaringan.html) y posters .panelset[ .panel[.panel-name[En R] | Paquete / Programa | Uso principal | |------------------------|-------------------------------------------------------------------------------| | `rmarkdown` | Crear documentos reproducibles con texto, código y resultados | | `knitr` | Ejecutar chunks de código en RMarkdown | | `Quarto` | Plataforma moderna para documentos con R, Python, etc. | | `bookdown` | Crear libros técnicos con Markdown + RMarkdown | | `blogdown` | Generar blogs científicos usando Markdown y Hugo | | `flexdashboard` | Dashboards interactivos escritos en Markdown | ] .panel[.panel-name[En Python] | Paquete / Programa | Uso principal | |------------------------|-------------------------------------------------------------------------------| | Jupyter Notebooks | Celdas Markdown para explicar y documentar junto con código | | `Quarto` | Igual que en R, permite combinar Markdown con código Python | | `mkdocs` | Generar sitios web de documentación técnica desde archivos Markdown | | `Sphinx + MyST` | Documentación avanzada con soporte para Markdown | | `markdown`, `mistune` | Librerías para convertir Markdown a HTML | | `nbconvert` | Exportar notebooks con Markdown a PDF, HTML, LaTeX, etc. | ] ] --- ## ¿Cómo funciona? Pasos generales: 1. Crear un archivo Markdown con un editor de texto o una aplicación específica. El archivo debe tener la extensión `.md o .markdown`. 2. Se abre el archivo Markdown en una aplicación Markdown. 3. Se utiliza la aplicación Markdown para convertir el archivo Markdown en un documento HTML. 4. Visualización del archivo HTML en un navegador web o use la aplicación Markdown para convertirlo a otro formato de archivo, como PDF. .content-box-gray[ La aplicación y el procesador de Markdown son dos componentes independientes. Para simplificar, los he combinado en un solo elemento ("aplicación de Markdown") en la figura a continuación. ] <img src="data:image/png;base64,#figures/markdown-flowchart.png" width="60%" style="display: block; margin: auto;" /> .left[.footnote[.black[ Imagen tomada de: https://www.markdownguide.org/getting-started/ ]]] --- ## Markdown app: Visual Studio Code **Visual Studio Code** es un editor de código que combina las funcionalidades de un entorno de desarrollo integrado (IDE) con la simplicidad de un editor de texto. .pull-left[ #### ¿Por qué se usa? - **VS Code** es gratuito y de código abierto - Multiplataforma (Windows, macOS y Linux) - Control de versiones integrado - Amplia gama de extensiones <img src="data:image/png;base64,#figures/vsc_logo.jpg" width="80%" style="display: block; margin: auto;" /> ] .pull-right[ #### La interfaz de usuario Al iniciar **VS Code** por primera vez encontraremos interfaz limpia y minimalista. Aunque pueda parecer simple a primera vista, la interfaz de VS Code es extremadamente poderosa y personalizable. <img src="data:image/png;base64,#figures/vsc_interfaz.png" width="100%" style="display: block; margin: auto;" /> ] Vamos a instalarlo de acuerdo a [nuestra plataforma](https://code.visualstudio.com/). ---